package com.iob.coin.covid19kg.dataset;

import org.apache.jena.query.Dataset;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.Statement;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * @Author: GuoXinyuan
 * @Date: 2021/5/29
 * 与 jena dataset通信获取数据
 */

public interface DatasetManager {

    /**
     * 根据label模糊匹配uri
     * @param label
     * @return
     */
    List<RDFNode> getResourceByLabel(String label);

    /**
     * 根据uri获取资源
     * @param uri
     * @return
     */
    Resource getResource(String uri);

    /**
     * 获取 r p
     * @param resource
     * @param property
     * @return
     */
    Statement getProperty(Resource resource,Property property);

    /**
     * 列出所有满座条件的语句
     * @param resource
     * @param property
     * @param rdfNode
     * @return
     */
    List<Statement> listStatements(Resource resource,Property property,RDFNode rdfNode);


    /**
     * 获取某个资源关联的所有资源
     * @param resource
     * @return
     */
    List<Statement> searchAboutResource(Resource resource);

    /**
     * 是否是基本数据类型
     * @param resource
     * @return
     */
    boolean isBaseType(Resource resource);

    /**
     * 获取RDF基类型
     * @param resource
     * @return
     */
    Resource getRDFBaseType(Resource resource);

    /**
     * 获取中文标签
     * @param resource
     * @return
     */
    String getLabel(Resource resource,String lang);

    /**
     * 获取类型属性
     * @param resource
     * @return
     */
    Resource getType(Resource resource);

}
